#pragma once

#include "Entity.h"

class Layer;


class Player : public Entity {

		//	Player data
	SGD::Rectangle m_PlayerRect;
	SGD::Rectangle m_PlayerSmellRect;

	SGD::Point m_CamOffset;

	float m_Health;
	float m_Stamina;
	float m_moveSpeed;
	float m_SmellRadius;

public:

	Player();
	~Player();

		//	Overrides
	void Update(float elapsedtime){}
	void Update(float elapsedTime, SGD::Size, Layer* lay, SGD::Point offset);
	void Render() override;

	void PreformBehavaior() override;
	void HandleCollision(const IEntity* pOther) override;	
	void SetCamOffset(SGD::Point p) override { m_CamOffset = p; };
	void UpdateRects(SGD::Point p);

	int GetType() const override;
	SGD::Rectangle GetRect() const override;
	
		// Accessors:
	float			GetRotation(void) const			{ return m_fRotation; }
	float			GetHealth()						{ return m_Health; }
	float			GetStamina()					{ return m_Stamina; }
	SGD::HTexture	GetImage(void) const			{ return m_hImage; }
	SGD::Point		GetPosition(void) const			{ return m_ptPosition; }
	SGD::Vector		GetVelocity(void) const			{ return m_vtVelocity; }
	SGD::Size		GetSize(void) const				{ return m_szSize; }
	SGD::Rectangle	GetRect()						{ return m_PlayerRect; }
	
		// Mutators:
	void SetRotation(float rad)			{ m_fRotation = rad; }
	void SetHealth(float hp)			{ m_Health = hp; }
	void SetStamina(float s)			{ m_Stamina = s; }
	void SetImage(SGD::HTexture	img)	{ m_hImage = img; }
	void SetPosition(SGD::Point	pos) 	{ m_ptPosition = pos; }
	void SetVelocity(SGD::Vector vel)	{ m_vtVelocity = vel; }
	void SetSize(SGD::Size size)		{ m_szSize = size; }	
};